package org.wwb.antbox.user.model.user.entity;

import org.ant.commons.models.bean.IEntity;
import org.ant.mybatis.annotation.LogicDelete;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;

/**
 * @Author Bond
 * @Date: 2019/12/26 17:08
 * @Description: 系统用户表
 */
@Table(name = "t_sys_user")
public class SysUser implements IEntity<String> {

    @Id
    @Column(name = "id")
    @GeneratedValue(generator = "system-uuid")
    private String id;

    /** 登录账号, 数据库字段：login_name */
    private String loginName;

    /** 登录密码, 数据库字段：login_pwd */
    private String loginPwd;

    /** 昵称, 数据库字段：nick_name */
    private String nickName;

    /** 真实姓名, 数据库字段：real_name */
    private String realName;

    /** 生日, 数据库字段：birthday */
    private Date birthday;

    /** 身份证号, 数据库字段：id_card */
    private String idCard;

    /** 性别, 数据库字段：sex SexEnum 枚举*/
    private String sex;

    /** 手机号, 数据库字段：mobile */
    private String mobile;

    /** 邮箱, 数据库字段：email */
    private String email;

    /** 头像地址, 数据库字段：avatar_url */
    private String avatarUrl;

    /** 星座, 数据库字段：constellation */
    private String constellation;

    /** 民族, 数据库字段：nation */
    private String nation;

    /** 省地区, 数据库字段：region */
    private String region;

    /** 市, 数据库字段：city */
    private String city;

    /** 详细地址, 数据库字段：address */
    private String address;

    /** 账号状态 正常、停用、冻结, 数据库字段：status  SysUserStatusEnum 枚举*/
    private String status;

    /** 动态秘钥, 数据库字段：authentication_key */
    private String authenticationKey;

    /** 最后活跃时间, 数据库字段：last_active_time */
    private Date lastActiveTime;

    /** 累计在线时长, 数据库字段：total_online_time */
    private Long totalOnlineTime;

    /** 停用时间, 数据库字段：disabled_time */
    private Date disabledTime;

    /** 冻结时间, 数据库字段：freeze_time */
    private Date freezeTime;

    /** 冻结开始时间, 数据库字段：freeze_start_time */
    private Date freezeStartTime;

    /** 冻结结束时间, 数据库字段：freeze_end_time */
    private Date freezeEndTime;

    /** 冻结原因内容, 数据库字段：freeze_content */
    private String freezeContent;

    /** 备注, 数据库字段：remark */
    private String remark;

    /** 创建人, 数据库字段：create_user_id */
    private String createUserId;

    /** 创建时间, 数据库字段：create_time */
    private Date createTime;

    /** 更新人, 数据库字段：modify_user_id */
    private String modifyUserId;

    /** 更新时间, 数据库字段：modify_time */
    private Date modifyTime;

    /** 是否删除, 数据库字段：deleted */
    @LogicDelete
    private String deleted;

    /** 设置主键, 数据库字段：t_sys_user.id */
    @Override
    public void setId(String id) {
        this.id = id;
    }

    /** 获取主键, 数据库字段：t_sys_user.id */
    @Override
    public String getId() {
        return this.id;
    }


    /** 设置登录账号, 数据库字段：t_sys_user.login_name */
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    /** 获取登录账号, 数据库字段：t_sys_user.login_name */
    public String getLoginName() {
        return loginName;
    }

    /** 设置登录密码, 数据库字段：t_sys_user.login_pwd */
    public void setLoginPwd(String loginPwd) {
        this.loginPwd = loginPwd;
    }

    /** 获取登录密码, 数据库字段：t_sys_user.login_pwd */
    public String getLoginPwd() {
        return loginPwd;
    }

    /** 设置昵称, 数据库字段：t_sys_user.nick_name */
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    /** 获取昵称, 数据库字段：t_sys_user.nick_name */
    public String getNickName() {
        return this.nickName;
    }

    /** 设置真实姓名, 数据库字段：t_sys_user.real_name */
    public void setRealName(String realName) {
        this.realName = realName;
    }

    /** 获取真实姓名, 数据库字段：t_sys_user.real_name */
    public String getRealName() {
        return this.realName;
    }

    /** 设置生日, 数据库字段：t_sys_user.birthday */
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    /** 获取生日, 数据库字段：t_sys_user.birthday */
    public Date getBirthday() {
        return this.birthday;
    }

    /** 获取身份证号, 数据库字段：t_sys_user.id_card */
    public String getIdCard() {
        return idCard;
    }

    /** 设置身份证号, 数据库字段：t_sys_user.id_card */
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    /** 设置性别, 数据库字段：t_sys_user.sex */
    public void setSex(String sex) {
        this.sex = sex;
    }

    /** 获取性别, 数据库字段：t_sys_user.sex */
    public String getSex() {
        return this.sex;
    }

    /** 设置手机号, 数据库字段：t_sys_user.mobile */
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    /** 获取手机号, 数据库字段：t_sys_user.mobile */
    public String getMobile() {
        return this.mobile;
    }

    /** 设置邮箱, 数据库字段：t_sys_user.email */
    public void setEmail(String email) {
        this.email = email;
    }

    /** 获取邮箱, 数据库字段：t_sys_user.email */
    public String getEmail() {
        return this.email;
    }

    /** 设置头像地址, 数据库字段：t_sys_user.avatar_url */
    public void setAvatarUrl(String avatarUrl) {
        this.avatarUrl = avatarUrl;
    }

    /** 获取头像地址, 数据库字段：t_sys_user.avatar_url */
    public String getAvatarUrl() {
        return this.avatarUrl;
    }

    /** 设置星座, 数据库字段：t_sys_user.constellation */
    public void setConstellation(String constellation) {
        this.constellation = constellation;
    }

    /** 获取星座, 数据库字段：t_sys_user.constellation */
    public String getConstellation() {
        return this.constellation;
    }

    /** 设置民族, 数据库字段：t_sys_user.nation */
    public void setNation(String nation) {
        this.nation = nation;
    }

    /** 获取民族, 数据库字段：t_sys_user.nation */
    public String getNation() {
        return this.nation;
    }

    /** 设置省地区, 数据库字段：t_sys_user.region */
    public void setRegion(String region) {
        this.region = region;
    }

    /** 获取省地区, 数据库字段：t_sys_user.region */
    public String getRegion() {
        return this.region;
    }

    /** 设置市, 数据库字段：t_sys_user.city */
    public void setCity(String city) {
        this.city = city;
    }

    /** 获取市, 数据库字段：t_sys_user.city */
    public String getCity() {
        return this.city;
    }

    /** 设置详细地址, 数据库字段：t_sys_user.address */
    public String getAddress() {
        return address;
    }
    /** 设置详细地址, 数据库字段：t_sys_user.address */
    public void setAddress(String address) {
        this.address = address;
    }

    /** 设置账号状态 正常、停用、冻结, 数据库字段：t_sys_user.status */
    public void setStatus(String status) {
        this.status = status;
    }

    /** 获取账号状态 正常、停用、冻结, 数据库字段：t_sys_user.status */
    public String getStatus() {
        return this.status;
    }

    /** 设置动态秘钥, 数据库字段：t_sys_user.authentication_key */
    public void setAuthenticationKey(String authenticationKey) {
        this.authenticationKey = authenticationKey;
    }

    /** 获取动态秘钥, 数据库字段：t_sys_user.authentication_key */
    public String getAuthenticationKey() {
        return this.authenticationKey;
    }

    /** 设置最后活跃时间, 数据库字段：t_sys_user.last_active_time */
    public void setLastActiveTime(Date lastActiveTime) {
        this.lastActiveTime = lastActiveTime;
    }

    /** 获取最后活跃时间, 数据库字段：t_sys_user.last_active_time */
    public Date getLastActiveTime() {
        return this.lastActiveTime;
    }

    /** 设置累计在线时长, 数据库字段：t_sys_user.total_online_time */
    public void setTotalOnlineTime(Long totalOnlineTime) {
        this.totalOnlineTime = totalOnlineTime;
    }

    /** 获取累计在线时长, 数据库字段：t_sys_user.total_online_time */
    public Long getTotalOnlineTime() {
        return this.totalOnlineTime;
    }

    /** 设置停用时间, 数据库字段：t_sys_user.disabled_time */
    public void setDisabledTime(Date disabledTime) {
        this.disabledTime = disabledTime;
    }

    /** 获取停用时间, 数据库字段：t_sys_user.disabled_time */
    public Date getDisabledTime() {
        return this.disabledTime;
    }

    /** 设置冻结时间, 数据库字段：t_sys_user.freeze_time */
    public void setFreezeTime(Date freezeTime) {
        this.freezeTime = freezeTime;
    }

    /** 获取冻结时间, 数据库字段：t_sys_user.freeze_time */
    public Date getFreezeTime() {
        return this.freezeTime;
    }

    /** 设置冻结开始时间, 数据库字段：t_sys_user.freeze_start_time */
    public void setFreezeStartTime(Date freezeStartTime) {
        this.freezeStartTime = freezeStartTime;
    }

    /** 获取冻结开始时间, 数据库字段：t_sys_user.freeze_start_time */
    public Date getFreezeStartTime() {
        return this.freezeStartTime;
    }

    /** 设置冻结结束时间, 数据库字段：t_sys_user.freeze_end_time */
    public void setFreezeEndTime(Date freezeEndTime) {
        this.freezeEndTime = freezeEndTime;
    }

    /** 获取冻结结束时间, 数据库字段：t_sys_user.freeze_end_time */
    public Date getFreezeEndTime() {
        return this.freezeEndTime;
    }

    /** 设置冻结原因内容, 数据库字段：t_sys_user.freeze_content */
    public void setFreezeContent(String freezeContent) {
        this.freezeContent = freezeContent;
    }

    /** 获取冻结原因内容, 数据库字段：t_sys_user.freeze_content */
    public String getFreezeContent() {
        return this.freezeContent;
    }

    /** 设置备注, 数据库字段：t_sys_user.remark */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /** 获取备注, 数据库字段：t_sys_user.remark */
    public String getRemark() {
        return this.remark;
    }

    /** 设置创建人, 数据库字段：t_sys_user.create_user_id */
    public void setCreateUserId(String createUserId) {
        this.createUserId = createUserId;
    }

    /** 获取创建人, 数据库字段：t_sys_user.create_user_id */
    public String getCreateUserId() {
        return this.createUserId;
    }

    /** 设置创建时间, 数据库字段：t_sys_user.create_time */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /** 获取创建时间, 数据库字段：t_sys_user.create_time */
    public Date getCreateTime() {
        return this.createTime;
    }

    /** 设置更新人, 数据库字段：t_sys_user.modify_user_id */
    public void setModifyUserId(String modifyUserId) {
        this.modifyUserId = modifyUserId;
    }

    /** 获取更新人, 数据库字段：t_sys_user.modify_user_id */
    public String getModifyUserId() {
        return this.modifyUserId;
    }

    /** 设置更新时间, 数据库字段：t_sys_user.modify_time */
    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    /** 获取更新时间, 数据库字段：t_sys_user.modify_time */
    public Date getModifyTime() {
        return this.modifyTime;
    }

    /** 设置是否删除, 数据库字段：t_sys_user.deleted */
    public void setDeleted(String deleted) {
        this.deleted = deleted;
    }

    /** 获取是否删除, 数据库字段：t_sys_user.deleted */
    public String getDeleted() {
        return this.deleted;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = (prime * result) + ((id == null) ? 0 : id.hashCode());

        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }

        if (obj == null) {
            return false;
        }

        if (getClass() != obj.getClass()) {
            return false;
        }

        SysUser other = (SysUser) obj;

        if (id == null) {
            if (other.id != null) {
                return false;
            }
        } else if (!id.equals(other.id)) {
            return false;
        }

        return true;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("SysUser [");
        sb.append("id=").append(id);
        sb.append(", ");
        sb.append("loginName=").append(loginName);
        sb.append(", ");
        sb.append("loginPwd=").append(loginPwd);
        sb.append(", ");
        sb.append("nickName=").append(nickName);
        sb.append(", ");
        sb.append("realName=").append(realName);
        sb.append(", ");
        sb.append("birthday=").append(birthday);
        sb.append(", ");
        sb.append("id_card=").append(idCard);
        sb.append(", ");
        sb.append("sex=").append(sex);
        sb.append(", ");
        sb.append("mobile=").append(mobile);
        sb.append(", ");
        sb.append("email=").append(email);
        sb.append(", ");
        sb.append("avatarUrl=").append(avatarUrl);
        sb.append(", ");
        sb.append("constellation=").append(constellation);
        sb.append(", ");
        sb.append("nation=").append(nation);
        sb.append(", ");
        sb.append("region=").append(region);
        sb.append(", ");
        sb.append("city=").append(city);
        sb.append(", ");
        sb.append("address=").append(address);
        sb.append(", ");
        sb.append("status=").append(status);
        sb.append(", ");
        sb.append("authenticationKey=").append(authenticationKey);
        sb.append(", ");
        sb.append("lastActiveTime=").append(lastActiveTime);
        sb.append(", ");
        sb.append("totalOnlineTime=").append(totalOnlineTime);
        sb.append(", ");
        sb.append("disabledTime=").append(disabledTime);
        sb.append(", ");
        sb.append("freezeTime=").append(freezeTime);
        sb.append(", ");
        sb.append("freezeStartTime=").append(freezeStartTime);
        sb.append(", ");
        sb.append("freezeEndTime=").append(freezeEndTime);
        sb.append(", ");
        sb.append("freezeContent=").append(freezeContent);
        sb.append(", ");
        sb.append("remark=").append(remark);
        sb.append(", ");
        sb.append("createUserId=").append(createUserId);
        sb.append(", ");
        sb.append("createTime=").append(createTime);
        sb.append(", ");
        sb.append("modifyUserId=").append(modifyUserId);
        sb.append(", ");
        sb.append("modifyTime=").append(modifyTime);
        sb.append(", ");
        sb.append("deleted=").append(deleted);
        sb.append("]");

        return sb.toString();
    }
}
